home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / pastexmode.fpl < prev    next >
Text File  |  1996-04-02  |  5KB  |  155 lines

  1. // $Id: PasTeXMode.FPL 1.15 1996/04/02 18:35:58 jskov Exp $
  2. // $VER: PasTeXMode.FPL 1.6 (15.06.95) © Jesper Skov
  3.  
  4. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeXModePrefs() ««
  5. void export PasTeXModePrefs()
  6. {
  7.   PromptInfo(-1,"PasTeXMode preferences",-1,-1,
  8.    "PasTeX_auto_save",
  9.    "PasTeX_compile_dir",
  10.    "PasTeX_style",
  11.    "PasTeX_port_name",
  12.    "PasTeX_log_restart"
  13.    );
  14. }
  15.  
  16. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» ShowDVI to front ««
  17. void export PasTeXShow()
  18. {
  19.   if (!FindPort("showdvi")){
  20.     Request("ShowDVI not running!", "PasTeX info", "Huh?");
  21.   } else {
  22.     ARexxSend("showdvi", "tofront");
  23.     ARexxSend("showdvi", "activate");
  24.   }
  25. }
  26.  
  27. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeXCompile() ««
  28. void export PasTeXCompile()
  29. {
  30.   string TeXname = joinstr(GetCompileDir(),ReadInfo("file_name"));
  31.  
  32.   if (stricmp("tex",substr(TeXname,strlen(TeXname)-3,3))){ // Check that name ends with ".tex"
  33.     Request("The file name must have a .tex suffix!","PasTeX info","Blast!");
  34.     return(0);
  35.   }
  36.  
  37.   if (!FindPort(ReadInfo("PasTeX_port_name"))){
  38.     Request("Could not find PasTeX port!","PasTeX info","Huh?");
  39.   } else {
  40.     Save(TeXname);
  41.     ARexxSend(ReadInfo("PasTeX_port_name"), joinstr("compile ",ReadInfo("PasTeX_style")," ",TeXname));
  42.  
  43.     if (ReadInfo("PasTeX_auto_save")){        // Also update file to disk
  44.       Save();
  45.     }
  46.   }
  47. }
  48.  
  49.  
  50. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeXFail() ««
  51. void export PasTeXFail(string LogName)
  52. {
  53.   int texID = GetBufferID(joinstr(substr(LogName,0,strlen(LogName)-3),"tex"));
  54.  
  55.   WindowToFront();
  56.  
  57.   if (texID){                                // Only proceed if tex file was found
  58.     int logID = GetBufferID(LogName);
  59.  
  60.     if (!logID){
  61.       logID = New();
  62.     }
  63.  
  64.     logID = CurrentBuffer(logID);            // logID now previous
  65.     Load(joinstr(GetCompileDir(),LogName));
  66.     CurrentBuffer(logID);                     // Re-activate previously active buffer
  67.     PasTeXNextError(texID,1);                 // Search error from line 1
  68.   } else {
  69.     ReturnStatus("Could not find LaTeX buffer!?!");
  70.   }
  71. }
  72.  
  73.  
  74. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeXNextError() ««
  75. void export PasTeXNextError(int texID, int texLine)
  76. {
  77.   string texName = ReadInfo("file_name",texID);
  78.   string logName = joinstr(substr(texName,0,strlen(texName)-3),"log");
  79.   int logID = GetBufferID(logName);
  80.   int errLine = 0;
  81.  
  82.   if (logID){
  83.     CurrentBuffer(logID);
  84.  
  85.     if (ReadInfo("PasTeX_log_restart"))        // goto start of log file if
  86.       GotoLine(1);                            // this flag is set
  87.  
  88.     SearchSet("=f+","\nl.");
  89.     while(!Search("\nl.")){
  90.       CursorRight(3);
  91.       errLine = atoi(GetWord());
  92.       if (errLine > texLine){
  93.         SearchSet("=","\n!");
  94.         if (!Search("\n!")){                 // From this point texName is reused
  95.           CursorRight(2);                     // for speed reasons
  96.           texName = GetLine();
  97.           texName = substr(texName,0,strlen(texName)-1);
  98.         } else {
  99.           texName = "Error description not found!";
  100.         }
  101.  
  102.         CurrentBuffer(texID);
  103.         GotoLine(errLine);
  104.         ReturnStatus(texName);                 // Show error text
  105.         break;
  106.       }
  107.     }
  108.  
  109.     if (errLine <= texLine){                 // If no valid error line found
  110.       CurrentBuffer(texID);
  111.       ReturnStatus("No more errors found!");
  112.     }
  113.   } else {
  114.     ReturnStatus(joinstr("Log file \"",logName,"\" not loaded!"));
  115.   }
  116. }
  117.  
  118.  
  119.  
  120. string GetCompileDir()
  121. {
  122.   string dir = ReadInfo("PasTeX_compile_dir");
  123.   if (strlen(dir)==0)
  124.     dir = ReadInfo("file_path");
  125.   return(dir);
  126. }
  127.  
  128.  
  129. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Key bindings ««
  130. AssignKey("PasTeXCompile();",    "control c control c","pastex_mode");
  131. AssignKey("PasTeXNextError(GetBufferID(),ReadInfo(\"line\",GetBufferID()));","control c '0x2a'","pastex_mode");
  132.  
  133. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeXMode Settings ««
  134. ConstructInfo("PasTeX_auto_save","","","GBWH","",0,1,1);
  135. ConstructInfo("PasTeX_log_restart","","","GBWH","",0,1,1);
  136. ConstructInfo("PasTeX_compile_dir","","","GSWH","",0,0,"PrimeTeX:");
  137. ConstructInfo("PasTeX_port_name","","","GSWH","",0,0,"Start_TeX");
  138. ConstructInfo("PasTeX_style","","","GSWH","",0,0,"&latex");
  139.  
  140. ConstructInfo("pastex_mode","","","LBH","",0,1,0);
  141. ConstructInfo("pastex_mode_ext","","","GSWH","",0,0,"*tex*");
  142. ConstructInfo("pastex_mode_exe","","","GSWH","",0,0,"LaTeXModeInit();ME(\"double_mode\");");
  143.  
  144. AddMode(1,"pastex_mode", "pastex_mode_ext", "pastex_mode_exe");
  145.  
  146. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» PasTeX menu ««
  147. MenuAdd("i", "PasTeX","","",ReadInfo("Program_Menu"), -1);
  148.  MenuAdd("s", "Compile", "PasTeXCompile();","",ReadInfo("Program_Menu"), -1);
  149.  MenuAdd("s", "ShowDVI", "PasTeXShow();","",ReadInfo("Program_Menu"), -1);
  150.  MenuAdd("s", "---","","",ReadInfo("Program_Menu"), -1);
  151.  MenuAdd("s", "Next error", "PasTeXNextError(GetBufferID(),ReadInfo(\"line\",GetBufferID()));","",ReadInfo("Program_Menu"), -1);
  152.  
  153. MenuAdd("s", "PasTeX...", "PasTeXModePrefs();", "",ReadInfo("menu_program_title"),ReadInfo("menu_program_item"),-1); // Add to PackageSettings
  154. MenuBuild();
  155.